package com.xneure.code.upload;

import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;

import javax.servlet.http.HttpServletResponse;

public abstract class UploadFileHandie{
	protected FileUploadParam param;
	public void initParam(FileUploadParam param){
		this.param = param;
	}
	/**
	 * 检查文件类型
	 */
	public abstract void checkType();

	/**
	 * 发生错误的处理方式
	 */
	public abstract Handling getHandling();
	/**
	 * 每次读取文件的大小
	 * 
	 * @return int
	 */
	public abstract int getReadSize();

	/**
	 * 获取保存文件的路径
	 */
	public abstract String getSavePath();

	/**
	 * 检查文件大小
	 */
	public abstract void checkSize();

	/**
	 * 获取文件名称，根据需要对原始名称进行修改
	 */
	public abstract File checkFile();

	/**
	 * 校验文件路径
	 */
	public abstract void checkPath();
	/**
	 * 获取要下载的文件
	 * 
	 */
	public abstract void downloadFile(OutputStream os);
	/**
	 * 获取上传完成后保存的文件名
	 */
	public abstract String getSaveFileName();
	/**
	 * 保存文件
	 * @return 
	 * @throws Exception 
	 */
	public abstract File saveFile(InputStream inputStream,File sFile) throws Exception;
	/**
	 * 上传成功后返回的参数
	 */
	public abstract Object returnParam();
	
	public void setDownloadType(HttpServletResponse hsr){
		hsr.setContentType("application/x-msdownload;charset=UTF-8");
	}
}
